﻿

using System;
using System.Windows.Forms;
using Company.BLL;
using Company.BLL.KDT;
using Janus.Windows.GridEX;
using Janus.Windows.UI.CommandBars;
using InheritableBoolean=Janus.Windows.UI.InheritableBoolean;

namespace Company.Interface
{
	public partial class ToKhaiMauDichManageForm : BaseForm
	{
        private ToKhaiMauDichCollection tkmdCollection = new ToKhaiMauDichCollection();
	    
		public ToKhaiMauDichManageForm()
		{
			InitializeComponent();
		}

		//-----------------------------------------------------------------------------------------

        private void setCommandStatus()
        {
            dgList.AllowDelete = Janus.Windows.GridEX.InheritableBoolean.True;
            if (Convert.ToInt32(cbStatus.SelectedValue) == TrangThaiXuLy.CHO_DUYET)
            {
                dgList.RootTable.Columns["SoTiepNhan"].Visible = true;
                dgList.RootTable.Columns["NgayTiepNhan"].Visible = true;
                cmdSend.Enabled = InheritableBoolean.True;
                cmdSingleDownload.Enabled = InheritableBoolean.True;
                cmdCancel.Enabled = InheritableBoolean.True;
                khaibaoCTMenu.Enabled = true;
                NhanDuLieuCTMenu.Enabled = true;
                HuyCTMenu.Enabled = true;
            }
            else if (Convert.ToInt32(cbStatus.SelectedValue) == TrangThaiXuLy.DA_DUYET)
            {
                dgList.RootTable.Columns["SoTiepNhan"].Visible = true;
                dgList.RootTable.Columns["NgayTiepNhan"].Visible = true;
                dgList.AllowDelete = Janus.Windows.GridEX.InheritableBoolean.False;
                cmdSend.Enabled = InheritableBoolean.False;
                cmdSingleDownload.Enabled = InheritableBoolean.False;
                cmdCancel.Enabled = InheritableBoolean.False;
                khaibaoCTMenu.Enabled = false;
                NhanDuLieuCTMenu.Enabled = false;
                HuyCTMenu.Enabled = false;

            }
            else if (Convert.ToInt32(cbStatus.SelectedValue) == TrangThaiXuLy.CHUA_KHAI_BAO)
            {
                dgList.RootTable.Columns["SoTiepNhan"].Visible = false;
                dgList.RootTable.Columns["NgayTiepNhan"].Visible = false;
                cmdSend.Enabled = InheritableBoolean.True;
                cmdSingleDownload.Enabled = InheritableBoolean.False;
                cmdCancel.Enabled = InheritableBoolean.False;
                khaibaoCTMenu.Enabled = true;
                NhanDuLieuCTMenu.Enabled = false;
                HuyCTMenu.Enabled = false;

            }
            else if (Convert.ToInt32(cbStatus.SelectedValue) == TrangThaiXuLy.KHONG_PHE_DUYET)
            {
                dgList.RootTable.Columns["SoTiepNhan"].Visible = true;
                dgList.RootTable.Columns["NgayTiepNhan"].Visible = true;
                cmdSend.Enabled = InheritableBoolean.True;
                cmdSingleDownload.Enabled = InheritableBoolean.True;
                cmdCancel.Enabled = InheritableBoolean.True;
                khaibaoCTMenu.Enabled = true;
                NhanDuLieuCTMenu.Enabled = true;
                HuyCTMenu.Enabled = true;

            }
        }

        private void cbStatus_SelectedValueChanged(object sender, EventArgs e)
        {
            if (Convert.ToInt32(cbStatus.SelectedValue) == TrangThaiXuLy.CHUA_KHAI_BAO)
            {
                txtNamTiepNhan.Text = string.Empty;
                txtNamTiepNhan.Value = 0;
                txtNamTiepNhan.Enabled = false;
                txtSoTiepNhan.Value = 0;
                txtSoTiepNhan.Text = string.Empty;
                txtSoTiepNhan.Enabled = false;
            }
            else
            {
                txtNamTiepNhan.Value = DateTime.Today.Year;
                txtNamTiepNhan.Enabled = true;
                txtSoTiepNhan.Enabled = true;
            }
        }

		private void ToKhaiMauDichManageForm_Load(object sender, EventArgs e)
		{
            try
			{
                this.Cursor = Cursors.WaitCursor;
                cbStatus.SelectedIndex = 0;
                this.search();                
			}
			catch (Exception ex)
			{
				MessageBox.Show(ex.Message);
			}
			finally
			{
				this.Cursor = Cursors.Default;
			}
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnGetListFromHQ_Click(object sender, EventArgs e)
        {
            try
            {
                
                if (this.tkmdCollection.Count == 0) return;
                WSForm wsForm = new WSForm();
                wsForm.ShowDialog(this);
                if (!wsForm.IsReady) return;
                string strSTN = "";
                this.Cursor = Cursors.WaitCursor;
                foreach (ToKhaiMauDich tkmd in tkmdCollection)
                {
                    try
                    {
                        int ttxl = tkmd.TrangThaiXuLy;
                        tkmd.WSRequestStatus();
                        if (ttxl < tkmd.TrangThaiXuLy)
                        {
                            if (strSTN == "") strSTN += tkmd.SoTiepNhan;
                            else strSTN += ", " + tkmd.SoTiepNhan.ToString();
                        }
                    }
                    catch 
                    {
                        HangDoi hd = new HangDoi();
                        hd.ID = tkmd.ID;
                        hd.LoaiToKhai = LoaiToKhai.TO_KHAI_MAU_DICH;
                        hd.TrangThai = tkmd.TrangThaiXuLy;
                        hd.ChucNang = ChucNang.KHAI_BAO;
                        MainForm.AddToQueueForm(hd);
                        MainForm.ShowQueueForm();
                    }
                }
                this.Cursor = Cursors.Default;
                if(strSTN!="")
                    ShowMessage("Đồng bộ dữ liệu thành công.\nTrạng thái của các tờ khai có số tiếp nhận: " + strSTN + " đã thay đổi thành 'đã duyệt chính thức'.",false);
                else
                    ShowMessage("Đồng bộ dữ liệu thành công.", false);
                this.search();
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                ShowMessage(ex.Message, false);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }
        private ToKhaiMauDich getTKMDByID(long id)
        {
            foreach (ToKhaiMauDich tk in this.tkmdCollection)
            {
                if (tk.ID == id) return tk;
            }
            return null;
        }

        private void dgList_RowDoubleClick(object sender, Janus.Windows.GridEX.RowActionEventArgs e)
        {
            if (e.Row.RowType == RowType.Record)
            {
                if (e.Row.Cells["TrangThaiXuLy"].Value.ToString() != TrangThaiXuLy.DA_DUYET.ToString())
                {
                    long id = Convert.ToInt64(e.Row.Cells["ID"].Value);
                    ToKhaiMauDichForm f = new ToKhaiMauDichForm();
                    f.OpenType = OpenFormType.Edit;
                    f.TKMD = this.getTKMDByID(id);
                    f.NhomLoaiHinh = f.TKMD.MaLoaiHinh.Substring(0, 3);
                    f.ShowDialog();
                }
                else 
                {
                    long id = Convert.ToInt64(e.Row.Cells["ID"].Value);
                    ToKhaiMauDichForm f = new ToKhaiMauDichForm();
                    f.OpenType = OpenFormType.View;
                    f.TKMD = this.getTKMDByID(id);
                    f.NhomLoaiHinh = f.TKMD.MaLoaiHinh.Substring(0, 3);
                    f.ShowDialog();
                }
            }
        }

        //-----------------------------------------------------------------------------------------
        /// <summary>
        /// Tìm kiếm dữ liệu.
        /// </summary>
        private void search()
        {
            // Xây dựng điều kiện tìm kiếm.
            string where = "1 = 1";
            where += string.Format(" AND MaHaiQuan = '{0}'", ctrDonViHaiQuan.Ma);

            if (txtSoTiepNhan.TextLength > 0)
            {
                where += " AND SoTiepNhan = " + txtSoTiepNhan.Value;
            }

            if (Convert.ToInt32(cbStatus.SelectedValue) != TrangThaiXuLy.CHUA_KHAI_BAO)
            {
                if (txtNamTiepNhan.TextLength > 0)
                {
                    where += " AND YEAR(NgayTiepNhan) = " + txtNamTiepNhan.Value;
                }
            }
            if (cbStatus.SelectedValue != null)
                where += " AND TrangThaiXuLy = " + cbStatus.SelectedValue;

            // Thực hiện tìm kiếm.            
            this.tkmdCollection = new ToKhaiMauDich().SelectCollectionDynamic(where, "");
            dgList.DataSource = this.tkmdCollection;

            this.setCommandStatus();

            //this.currentNPLDangKy.TrangThaiXuLy = Convert.ToInt32(cbStatus.SelectedValue);
        }


        private void btnSearch_Click(object sender, EventArgs e)
        {
            this.search();
        }

        private void dgList_LoadingRow(object sender, RowLoadEventArgs e)
        {
            if (e.Row.RowType == RowType.Record)
            {
                e.Row.Cells["MaHaiQuan"].Text = this.DonViHaiQuan_GetName(e.Row.Cells["MaHaiQuan"].Value.ToString().Trim());
                e.Row.Cells["MaLoaiHinh"].Text = this.LoaiHinhMauDich_GetName(e.Row.Cells["MaLoaiHinh"].Value.ToString().Trim());
                switch (Convert.ToInt32(e.Row.Cells["TrangThaiXuLy"].Value))
                {
                    case -1:
                        e.Row.Cells["TrangThaiXuLy"].Text = "Chưa khai báo";
                        break;
                    case 0:
                        e.Row.Cells["TrangThaiXuLy"].Text = "Chờ duyệt";
                        break;
                    case 1:
                        {
                            string phanluong = e.Row.Cells["PhanLuong"].Text;
                            if(phanluong=="")
                                e.Row.Cells["TrangThaiXuLy"].Text = "Đã duyệt";
                            else
                            {
                                if(phanluong=="1" ||phanluong=="3" ||phanluong=="5")
                                    e.Row.Cells["TrangThaiXuLy"].Text = "Tờ khai đã được phân luồng xanh";
                                else  if(phanluong=="2" ||phanluong=="4" ||phanluong=="6" ||phanluong=="10")
                                        e.Row.Cells["TrangThaiXuLy"].Text = "Tờ khai đã được phân luồng đỏ";
                                else  if(phanluong=="8" ||phanluong=="12" )
                                        e.Row.Cells["TrangThaiXuLy"].Text = "Tờ khai đã được phân luồng vàng";
                            }
                               
                        }
                        break;
                    case 2:
                        e.Row.Cells["TrangThaiXuLy"].Text = "Không phê duyệt";
                        break;
                }
            }
        }

        private void cmMain_CommandClick(object sender, CommandEventArgs e)
        {
            switch (e.Command.Key)
            {
                case "cmdSingleDownload":
                    this.downloadItemsSelect();
                    break;
                case "cmdCancel":
                    this.cancelItemsSelect();
                    break;
                case "cmdSend":
                    this.sendItemsSelect();
                    break;
                case "SaoChep":
                    this.SaoChepToKhaiMD();
                    break;
                case "SaoChepALL":
                    this.SaoChepALLHang();
                    break;
                case "SaoChepToKhaiHang":
                    this.SaoChepToKhaiMD();
                    break;
            }
        }
        private void SaoChepALLHang()
        {
            if (!(dgList.GetRow() != null && dgList.GetRow().RowType == RowType.Record))
                return;
            ToKhaiMauDich tkmd = new ToKhaiMauDich();
            tkmd.ID = ((ToKhaiMauDich)dgList.GetRow().DataRow).ID;
            tkmd.Load();
            tkmd.LoadHMDCollection();
            foreach (HangMauDich hmd in tkmd.HMDCollection)
            {
                hmd.ID = 0;
            }
            tkmd.ID = 0;
            tkmd.SoToKhai = 0;
            tkmd.SoTiepNhan = 0;
            tkmd.TrangThaiXuLy = TrangThaiXuLy.CHUA_KHAI_BAO;
            ToKhaiMauDichForm f = new ToKhaiMauDichForm();
            f.OpenType = OpenFormType.Edit;
            f.MdiParent = this.ParentForm;
            f.TKMD = tkmd;
            f.Show();
        }
        private void SaoChepToKhaiMD()
        {
            if (!(dgList.GetRow() != null && dgList.GetRow().RowType == RowType.Record))
                return;            
            ToKhaiMauDich tkmd =new ToKhaiMauDich();
            tkmd.ID = ((ToKhaiMauDich)dgList.GetRow().DataRow).ID;          
            tkmd.Load();
            tkmd.SoToKhai = 0;
            tkmd.ID = 0;
            tkmd.SoTiepNhan = 0;
            tkmd.TrangThaiXuLy = TrangThaiXuLy.CHUA_KHAI_BAO;          
            ToKhaiMauDichForm f = new ToKhaiMauDichForm();
            f.OpenType = OpenFormType.Edit;
            f.MdiParent = this.ParentForm;
            f.TKMD = tkmd;
            f.Show();
        }
        private void download()
        {
            try
            {
                
                GridEXSelectedItemCollection items = dgList.SelectedItems;
                foreach (GridEXSelectedItem i in items)
                {
                    if (i.RowType == RowType.Record)
                    {
                        ToKhaiMauDich tkmd = (ToKhaiMauDich) i.GetRow().DataRow;

                        int ttxl = tkmd.TrangThaiXuLy;
                        string stPhanLuong = tkmd.PhanLuong;
                        WSForm wsForm = new WSForm();
                        wsForm.ShowDialog(this);
                        if (!wsForm.IsReady) return;
                        this.Cursor = Cursors.WaitCursor;
                        tkmd.WSRequestStatus();
                        string st = "Trạng thái chứng từ đã thay đổi: ";
                        if (ttxl < tkmd.TrangThaiXuLy)
                        {
                            if (tkmd.PhanLuong == "")
                            {
                                if (tkmd.TrangThaiXuLy == TrangThaiXuLy.DA_DUYET)
                                    st += "Đã duyệt chính thức.";
                                else if (tkmd.TrangThaiXuLy == TrangThaiXuLy.KHONG_PHE_DUYET)
                                    st += "Không phê duyệt tờ khai này";
                            }
                            else
                            {
                                //xanh
                                if (tkmd.PhanLuong == "1" || tkmd.PhanLuong == "3" || tkmd.PhanLuong == "5")
                                    st += "Tờ khai đã được phân luồng xanh";
                                else if (tkmd.PhanLuong == "2" || tkmd.PhanLuong == "4" || tkmd.PhanLuong == "6" || tkmd.PhanLuong == "10")
                                    st += "Tờ khai đã được phân luồng đỏ";
                                else if (tkmd.PhanLuong == "8" || tkmd.PhanLuong == "12")
                                    st += "Tờ khai đã được phân luồng vàng";
                            }
                            this.Cursor = Cursors.Default;
                            ShowMessage("Nhận dữ liệu thành công! \n"+st, false);
                            this.search();
                        }
                        else if (ttxl == tkmd.TrangThaiXuLy)
                        {
                            if (stPhanLuong != "" && stPhanLuong != tkmd.PhanLuong)
                            {
                                if (tkmd.PhanLuong == "1" || tkmd.PhanLuong == "3" || tkmd.PhanLuong == "5")
                                    st += "Tờ khai đã được phân luồng xanh";
                                else if (tkmd.PhanLuong == "2" || tkmd.PhanLuong == "4" || tkmd.PhanLuong == "6" || tkmd.PhanLuong == "10")
                                    st += "Tờ khai đã được phân luồng đỏ";
                                else if (tkmd.PhanLuong == "8" || tkmd.PhanLuong == "12")
                                    st += "Tờ khai đã được phân luồng vàng";
                            }
                            else
                                st = "";
                            ShowMessage("Nhận dữ liệu thành công!\n"+st, false);
                            dgList.Refetch();
                        }
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                ShowMessage(ex.Message,false);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }

	    /// <summary>
        /// Gửi thông tin đăng ký đến Hải quan.
        /// </summary>
        private void send()
        {
            ToKhaiMauDich tkmd = new ToKhaiMauDich();
            try
            {

                if (dgList.GetRow() != null && dgList.GetRow().RowType==RowType.Record)
                {
                    
                    WSForm wsForm = new WSForm();
                    wsForm.ShowDialog(this);
                    if (!wsForm.IsReady) return;
                    this.Cursor = Cursors.WaitCursor;
                    tkmd = (ToKhaiMauDich)dgList.GetRow().DataRow;
                    tkmd.LoadHMDCollection();
                    tkmd.LoadChungTuTKCollection();
                    if (tkmd.HMDCollection.Count == 0)
                    {
                        ShowMessage("Danh sách hàng hóa rỗng.\nKhông thể thực hiện khai báo thông tin đến Hải quan.", false);
                        this.Cursor = Cursors.Default;
                        return;
                    }

                    tkmd.WSSend();

                    // Thực hiện kiểm tra.
                    if (tkmd.SoTiepNhan == 0)
                    {
                        ShowMessage("Khai báo không thành công", true); 

                    }
                    else
                    {
                        ShowMessage("Đăng ký thành công!\nSố tiếp nhận đăng ký điện tử: " + tkmd.SoTiepNhan, false);
                    }
                    this.search();
                    
                }
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                if (ex.Message.IndexOf("123DaDuyet321") >= 0)
                {
                    ShowMessage("Danh sách này đã duyệt rồi ", false);
                    return;
                }
                if (ShowMessage("Khai báo không thành công.\nLỗi: " + ex.Message +".\nBạn có muốn đưa vào hàng đợi không?", true) == "Yes")
                {
                    HangDoi hd = new HangDoi();
                    hd.ID = tkmd.ID;
                    hd.LoaiToKhai = LoaiToKhai.TO_KHAI_MAU_DICH;
                    hd.TrangThai = tkmd.TrangThaiXuLy;
                    hd.ChucNang = ChucNang.KHAI_BAO;
                    MainForm.AddToQueueForm(hd);
                    MainForm.ShowQueueForm();
                }
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }

        /// <summary>
        /// Hủy thông tin đã đăng ký.
        /// </summary>
        private void cancel()
        {
            ToKhaiMauDich tkmd = new ToKhaiMauDich();
            try
            {
                if (dgList.GetRow() != null && dgList.GetRow().RowType == RowType.Record)
                {

                    
                    WSForm wsForm = new WSForm();
                    wsForm.ShowDialog(this);
                    if (!wsForm.IsReady) return;
                    this.Cursor = Cursors.WaitCursor;
                    tkmd = (ToKhaiMauDich)dgList.GetRow().DataRow;
                    if (tkmd.TrangThaiXuLy == TrangThaiXuLy.CHO_DUYET)
                    {
                        bool result = tkmd.WSCancel();
                        this.Cursor = Cursors.Default;
                        if (result)
                        {
                            ShowMessage("Hủy thông tin đã đăng ký thành công!", false);
                            this.search();
                        }
                        else
                        {

                        }
                    }
                }
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                if (ex.Message.IndexOf("123DaDuyet321") >= 0)
                {
                    ShowMessage("Danh sách này đã duyệt rồi ", false);
                    return;
                }
                if (ShowMessage("Hủy khai báo không thành công.\nLỗi: "+ex.Message +".\nBạn có muốn đưa vào hàng đợi không?", true) == "Yes")
                {
                    HangDoi hd = new HangDoi();
                    hd.ID = tkmd.ID;
                    hd.LoaiToKhai = LoaiToKhai.TO_KHAI_MAU_DICH;
                    hd.TrangThai = tkmd.TrangThaiXuLy;
                    hd.ChucNang = ChucNang.HUY_KHAI_BAO;
                    MainForm.AddToQueueForm(hd);
                    MainForm.ShowQueueForm();

                }
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }

        private void uiCommandBar1_CommandClick(object sender, CommandEventArgs e)
        {

        }

        private void khaibaoCTMenu_Click(object sender, EventArgs e)
        {
            send();
        }

        private void NhanDuLieuCTMenu_Click(object sender, EventArgs e)
        {
            download();
        }

        private void HuyCTMenu_Click(object sender, EventArgs e)
        {
            cancel();
        }

        private void saoChepTK_Click(object sender, EventArgs e)
        {
            SaoChepToKhaiMD();
        }

        private void saoChepHH_Click(object sender, EventArgs e)
        {
            SaoChepALLHang();
        }

        private void downloadItemsSelect()
        {
            try
            {
                WSForm wsForm = new WSForm();
                wsForm.ShowDialog(this);
                if (!wsForm.IsReady) return;
                bool ok = true;
                int k = 0;
                int item = 0;
                GridEXSelectedItemCollection items = dgList.SelectedItems;
                foreach (GridEXSelectedItem i in items)
                {
                    this.Cursor = Cursors.WaitCursor;
                    if (i.RowType == RowType.Record)
                    {
                        ToKhaiMauDich tkmd = (ToKhaiMauDich)i.GetRow().DataRow;
                        tkmd.MaHaiQuan = ctrDonViHaiQuan.Ma;
                        try
                        {
                            k++;
                            item++;
                            tkmd.WSRequestStatus();

                        }
                        catch (Exception ex)
                        {
                            this.Cursor = Cursors.Default;
                            ok = false;
                            item--;
                            string message = "";
                            if (k == items.Count)
                                message = "Tờ khai có số tiếp nhận " + tkmd.SoTiepNhan.ToString() + " không nhận dữ liệu về được?\nBạn có muốn đưa vào hàng đợi không";
                            else
                                message = "Tờ khai có số tiếp nhận " + tkmd.SoTiepNhan.ToString() + " không nhận dữ liệu về được?\nBạn có muốn đưa vào hàng đợi và \ntiếp tục nhận dữ liệu của các bản ghi tiếp không";
                            string st = ShowMessage(message, true);
                            if (st != "Yes")
                                break;
                            else
                            {
                                if (k < items.Count)
                                    ok = true;
                                else
                                    ok = false;
                                Company.BLL.KDT.HangDoi hd = new Company.BLL.KDT.HangDoi();
                                hd.LoaiToKhai = LoaiToKhai.TO_KHAI_MAU_DICH;
                                hd.TrangThai = TrangThaiXuLy.CHO_DUYET;
                                hd.ChucNang = ChucNang.NHAN_THONG_TIN;
                                hd.ID = tkmd.ID;                               
                                MainForm.AddToQueueForm(hd);
                                MainForm.ShowQueueForm();
                            }

                        }

                    }
                }
                this.Cursor = Cursors.Default;
                if (ok)
                {
                    if (item > 0)
                        ShowMessage("Nhận dữ liệu thành công " + item.ToString() + " tờ khai", false);
                    else
                        ShowMessage("Không nhận dữ liệu tờ khai nào cả", false);
                }
                this.search();
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                ShowMessage(ex.Message, false);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }

        private void sendItemsSelect()
        {
            try
            {
                WSForm wsForm = new WSForm();
                wsForm.ShowDialog(this);
                if (!wsForm.IsReady) return;
                bool ok = true;
                int k = 0;
                int itemOK = 0;
                GridEXSelectedItemCollection items = dgList.SelectedItems;
                foreach (GridEXSelectedItem i in items)
                {
                    this.Cursor = Cursors.WaitCursor;
                    if (i.RowType == RowType.Record)
                    {
                        ToKhaiMauDich tkmd = (ToKhaiMauDich)i.GetRow().DataRow;
                        tkmd.MaHaiQuan = ctrDonViHaiQuan.Ma;
                        tkmd.LoadHMDCollection();
                        tkmd.LoadChungTuTKCollection();
                        try
                        {
                            k++;
                            itemOK++;
                            tkmd.WSSend();
                        }
                        catch (Exception ex)
                        {
                            itemOK--;
                            this.Cursor = Cursors.Default;
                            ok = false;
                            string message = "";
                            if (k == items.Count)
                            {
                                message = "Tờ khai có số tiếp nhận " + tkmd.SoTiepNhan.ToString() + " không nhận dữ liệu về được?\nBạn có muốn đưa vào hàng đợi không";
                                if (ex.Message.IndexOf("123DaDuyet321") >= 0)
                                {
                                    ShowMessage("Tờ khai có số tiếp nhận " + tkmd.SoTiepNhan.ToString() + " đã được hải quan duyệt rồi ", false);
                                    break;
                                }
                            }
                            else
                            {
                                message = "Tờ khai có số tiếp nhận " + tkmd.SoTiepNhan.ToString() + " không nhận dữ liệu về được?\nBạn có muốn đưa vào hàng đợi và \ntiếp tục gửi dữ liệu của các tờ khai tiếp không";
                                if (ex.Message.IndexOf("123DaDuyet321") >= 0)
                                {
                                    message=("Tờ khai có số tiếp nhận " + tkmd.SoTiepNhan.ToString() + " đã được hải quan duyệt rồi \nBạn có muốn tiếp tục gửi dữ liệu của các tờ khai tiếp không");                                    
                                }
                            }
                            string st = ShowMessage(message, true);
                            if (st != "Yes")
                                break;
                            else
                            {
                                if (k < items.Count)
                                    ok = true;
                                else
                                    ok = false;
                                Company.BLL.KDT.HangDoi hd = new Company.BLL.KDT.HangDoi();
                                hd.LoaiToKhai = LoaiToKhai.TO_KHAI_MAU_DICH;
                                hd.TrangThai = TrangThaiXuLy.CHO_DUYET;
                                hd.ChucNang = ChucNang.KHAI_BAO;
                                hd.ID = tkmd.ID;
                                MainForm.AddToQueueForm(hd);
                                MainForm.ShowQueueForm();
                            }

                        }

                    }
                }
                this.Cursor = Cursors.Default;
                if (ok)
                {
                    if (itemOK > 0)
                        ShowMessage("Khai báo thành công " + itemOK.ToString() + " tờ khai", false);
                    else
                        ShowMessage("Không khai báo được dữ liệu của tờ khai nào cả ! ", false);
                }
                else
                {
                    if (itemOK > 0)
                        ShowMessage("Khai báo thành công " + itemOK.ToString() + " tờ khai", false);
                }
                this.search();
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                ShowMessage(ex.Message, false);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }

        private void cancelItemsSelect()
        {
            try
            {
                WSForm wsForm = new WSForm();
                wsForm.ShowDialog(this);
                if (!wsForm.IsReady) return;
                bool ok = true;
                int k = 0;
                int itemOK = 0;
                GridEXSelectedItemCollection items = dgList.SelectedItems;
                foreach (GridEXSelectedItem i in items)
                {
                    this.Cursor = Cursors.WaitCursor;
                    if (i.RowType == RowType.Record)
                    {
                        ToKhaiMauDich tkmd = (ToKhaiMauDich)i.GetRow().DataRow;
                        tkmd.MaHaiQuan = ctrDonViHaiQuan.Ma;                        
                        try
                        {
                            k++;
                            itemOK++;
                            tkmd.WSCancel();
                        }
                        catch (Exception ex)
                        {
                            itemOK--;
                            this.Cursor = Cursors.Default;
                            ok = false;
                            string message = "";
                            if (k == items.Count)
                            {
                                message = "Tờ khai có số tiếp nhận " + tkmd.SoTiepNhan.ToString() + " không hủy khai báo được?\nBạn có muốn đưa vào hàng đợi không";
                                if (ex.Message.IndexOf("123DaDuyet321") >= 0)
                                {
                                    ShowMessage("Tờ khai có số tiếp nhận " + tkmd.SoTiepNhan.ToString() + " đã được hải quan duyệt rồi ", false);
                                    break;
                                }
                            }
                            else
                            {
                                message = "Tờ khai có số tiếp nhận " + tkmd.SoTiepNhan.ToString() + " hủy khai báo được ?\nBạn có muốn đưa vào hàng đợi và \ntiếp tục hủy các tờ khai tiếp không";
                                if (ex.Message.IndexOf("123DaDuyet321") >= 0)
                                {
                                    message = ("Tờ khai có số tiếp nhận " + tkmd.SoTiepNhan.ToString() + " đã được hải quan duyệt rồi \nBạn có muốn tiếp tục hủy các tờ khai tiếp không");
                                }
                            }
                            string st = ShowMessage(message, true);
                            if (st != "Yes")
                                break;
                            else
                            {
                                if (k < items.Count)
                                    ok = true;
                                else
                                    ok = false;
                                Company.BLL.KDT.HangDoi hd = new Company.BLL.KDT.HangDoi();
                                hd.LoaiToKhai = LoaiToKhai.TO_KHAI_MAU_DICH;
                                hd.TrangThai = TrangThaiXuLy.CHO_DUYET;
                                hd.ChucNang = ChucNang.HUY_KHAI_BAO;
                                hd.ID = tkmd.ID;
                                MainForm.AddToQueueForm(hd);
                                MainForm.ShowQueueForm();
                            }

                        }

                    }
                }
                this.Cursor = Cursors.Default;
                if (ok)
                {
                    if (itemOK > 0)
                        ShowMessage("Hủy khai báo thành công " + itemOK.ToString() + " tờ khai", false);
                    else
                        ShowMessage("Không hủy được khai báo của tờ khai nào cả ! ", false);
                }
                else
                {
                    if (itemOK > 0)
                        ShowMessage("Hủy khai báo thành công " + itemOK.ToString() + " tờ khai", false);                                            
                }
                this.search();
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                ShowMessage(ex.Message, false);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }

        private void uiContextMenu1_CommandClick(object sender, CommandEventArgs e)
        {

        }

        private void dgList_DeletingRecords(object sender, System.ComponentModel.CancelEventArgs e)
        {                                        
              {
                  if (ShowMessage("Bạn có muốn xóa các tờ khai này không?", true) == "Yes")
                  {
                      GridEXSelectedItemCollection items = dgList.SelectedItems;
                      foreach (GridEXSelectedItem i in items)
                      {

                          ToKhaiMauDich tkmd = (ToKhaiMauDich)i.GetRow().DataRow;
                          tkmd.Delete();
                      }
                  }
                  else
                      e.Cancel = true;
              }
        }
	}
}